package org.example;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

//TIP 要<b>运行</b>代码，请按 <shortcut actionId="Run"/> 或
// 点击装订区域中的 <icon src="AllIcons.Actions.Execute"/> 图标。
public class Main {

    public static void test() {
        //测试该方法是否开始运行
        System.out.println("test1...");
        //创建石斧和铁斧的对象
        Axe steelAxe = new SteelAxe();
        Axe stoneAxe = new StoneAxe();
        //使用空参构造创建一个伐木工c1
        WoodCutter c1 = new WoodCutter();
        //使用set方法赋予伐木工c1信息
        c1.setAxe(stoneAxe); // 设值注入 通过set方法传参注入被调用的对象, 这里注入的是stoneAxe
        c1.setNameId("C1");
        c1.setAge(19);
        c1.setBorn("2006.2.12");
        //c1调用伐木工的方法实现输出
        c1.useAxe();
        System.out.println("---------------------------------------");
        //使用含参构造创建伐木工c2，同时给赋予c2个人信息
        WoodCutter c2 = new WoodCutter(steelAxe, "C2",24,"2001.3.25"); // 构造注入 steelAxe
        //c2调用伐木工方法实现输出
        c2.useAxe();
        System.out.println("---------------------------------------");

        //创建Spring IoC容器实例
        ApplicationContext ctx = new ClassPathXmlApplicationContext("bean_lec01.xml");
        System.out.println("---------------------------------------");
        // 设值注入 配置
        //从Spring容器中获取一个id名为woodcutter01的Bean，
        // 找到文件中该id下的伐木工信息，并在强转为person类型后赋值给p1
        Person p1 = (Person) ctx.getBean("woodcutter01");
        //p1调用伐木工的方法，完成输出
        p1.useAxe();
        System.out.println("---------------------------------------");
        // 构造注入 配置
        //从Spring容器中获取一个id名为woodcutter02的Bean，
        // 找到文件中该id下的伐木工信息，并在强转为person类型后赋值给p2
        Person p2 = (Person) ctx.getBean("woodcutter02");
        //p1调用伐木工的方法，完成输出
        p2.useAxe();

    }

    public static void main(String[] args) {
        System.out.println("My name is GuHao! This is my Code.");
        //调用test方法
        test();
    }
}